package modelo;

public class Maquina {		
	

	public Maquina() {
		this.inicializar();
	}
	
	public void inicializar() {
		// poner Naves en tablero segun enunciado
		this.crearLanchaAleatoria().ponerEnTablero();
		this.crearLanchaAleatoria().ponerEnTablero();
		this.crearDestructorAleatorio().ponerEnTablero();
		this.crearDestructorAleatorio().ponerEnTablero();
		this.crearBuqueAleatorio().ponerEnTablero();
		this.crearPortaavionesAleatorio().ponerEnTablero();
		this.crearRompehielosAleatorio().ponerEnTablero();
	}

	private Posicionable crearRompehielosAleatorio() {
		return (new Rompehielos(this.crearDireccionAleatoria(), this.crearCasilleroAleatorio()));
	}


	private Posicionable crearPortaavionesAleatorio() {
		return (new Portaaviones(this.crearDireccionAleatoria(), this.crearCasilleroAleatorio()));
	}


	private Posicionable crearBuqueAleatorio() {
		return (new Buque(this.crearDireccionAleatoria(), this.crearCasilleroAleatorio()));
	}


	private Posicionable crearDestructorAleatorio() {
		return (new Destructor(this.crearDireccionAleatoria(), this.crearCasilleroAleatorio()));
	}


	private Posicionable crearLanchaAleatoria() {
		return (new Lancha(this.crearDireccionAleatoria(), this.crearCasilleroAleatorio()));
	}


	private Casillero crearCasilleroAleatorio() {
		int xAleatorio = (int) Math.round(Math.random() * (Tablero.tamanio - 1));		
		int yAleatorio = (int) Math.round(Math.random() * (Tablero.tamanio - 1));		
		return (Tablero.getInstancia().getCasillero(xAleatorio, yAleatorio));
	}


	private Versor crearDireccionAleatoria() {
		int direccionXAleatoria = (int) Math.round(Math.random() * 2 - 1);
		int direccionYAleatoria = (int) Math.round(Math.random() * 2 - 1);
		while (direccionYAleatoria == 0 && direccionXAleatoria == 0) {
			direccionYAleatoria = (int) Math.round(Math.random() * 2 - 1);
		}
		return (new Versor(direccionXAleatoria, direccionYAleatoria));
	}	
	

}
